*::after, *::before {
  box-sizing: border-box;
}

*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

section {
  display: flex;
  flex-flow: row wrap;
  justify-content: center;
  align-items: center;
  height: 100vh;
  overflow: hidden;
  background: #111;
}

section .text {
  position: relative;
  color: #FFF;
  margin: 40px;
  max-width: 800px;
  user-select: none;
  font-size: 1.5em;
}

section .text span {
  position: relative;
  display: inline-block;
  cursor: pointer;
}

section .text span.active {
  animation: smoke 2s linear forwards;
  transform-origin: bottom;
}

@keyframes smoke {
  0% {
    opacity: 1;
    filter: blur(0);
    transform: translateX(0) translateY(0) rotate(0deg) scale(1);
  }
  50% {
    opacity: 1;
    pointer-events: none;
  }
  100% {
    opacity: 0;
    filter: blur(20px);
    transform: translateX(300px) translateY(-300px) rotate(720deg) scale(4);
  }
}